package view;

import data.*;
import java.awt.*;

/**
 * 爆炸效果绘制视图类
 */
public class BombView {
    // -------------------- view --------------------

    /**
     * 功能: 绘制爆炸效果
     * 参数:
     *   g: Graphics绘图对象
     *   bomb: 爆炸数据
     * 返回值: void
     */
    public void drawBomb(Graphics g, BombData bomb) {
        if (bomb.getState() != 1) return;

        // 爆炸进度控制动画
        int progress = bomb.getBombProgress();
        if (progress > 30) {
            bomb.setState(0); // 爆炸结束
            return;
        }

        // 根据进度绘制不同的爆炸效果
        int centerX = bomb.getX() + bomb.getWidth() / 2;
        int centerY = bomb.getY() + bomb.getHeight() / 2;

        if (progress < 10) {
            // 爆炸初期 - 白色闪光
            g.setColor(Color.WHITE);
            g.fillOval(centerX - 15, centerY - 15, 30, 30);

        } else if (progress < 20) {
            // 爆炸中期 - 黄色火焰
            g.setColor(Color.YELLOW);
            g.fillOval(centerX - 20, centerY - 20, 40, 40);

            g.setColor(Color.ORANGE);
            g.fillOval(centerX - 15, centerY - 15, 30, 30);

        } else {
            // 爆炸后期 - 红色余焰
            g.setColor(Color.RED);
            g.fillOval(centerX - 10, centerY - 10, 20, 20);
        }

        // 绘制火花效果
        g.setColor(Color.YELLOW);
        for (int i = 0; i < 8; i++) {
            double angle = i * Math.PI / 4;
            int sparkX = centerX + (int)(Math.cos(angle) * (15 + progress));
            int sparkY = centerY + (int)(Math.sin(angle) * (15 + progress));
            g.fillOval(sparkX - 2, sparkY - 2, 4, 4);
        }

        // 增加爆炸进度
        bomb.setBombProgress(progress + 1);
    }
    // -------------------- view --------------------
}